#ifndef _USUARIO_H__
#define _USUARIO_H__

#include <string>
#include <iostream>
using namespace std;

class Usuario {
	private:
		string id;
		string nombre;
		string password;
		int partidasJugadas, partidasGanadas, partidasPerdidas, puntosGanados, tiempoJugado;
		
		void aumentarPartidasJugadas() {
			this->partidasJugadas = this->partidasJugadas + 1;
		}
		
	public:
		Usuario(){
			id = "id";
			nombre = "nombre";
			password = "password";
			partidasJugadas = 0;
			partidasGanadas = 0;
			partidasPerdidas = 0;
			puntosGanados = 0;
			tiempoJugado = 0;//ms
		}
		
		Usuario(string idPorParametro, string nombrePorParametro, string passwordPorParametro, int partidasJugadasPorParametro, int tiempoJugadoPorParametro){
			this->setId(idPorParametro);
			this->setNombre(nombrePorParametro);
			this->setPass(passwordPorParametro);
			partidasJugadas = partidasJugadasPorParametro;
			partidasGanadas = 0;
			partidasPerdidas = 0;
			puntosGanados = 0;
			tiempoJugado = tiempoJugadoPorParametro;
		}
		
		~Usuario(){
		}
		
		// Getters
		string getPass() {
			return(this->password);
		}
		
		string getId() {
			return(this->id);
		}
		
		string getNombre() {
			return (this->nombre);
		}

		int getPartidasJugadas() {
			return(this->partidasJugadas);
		}
		
		int getPartidasGanadas() {
			return(this->partidasGanadas);
		}
		
		int getPartidasPerdidas() {
			return(this->partidasPerdidas);
		}
		
		int getPuntosGanados() {
			return(this->puntosGanados);
		}

		int getTiempoJugado() {
			return(this->tiempoJugado);
		}
		
		//Setters

		void setTiempoJugado(int t) {
			this->tiempoJugado = t;
		}

		void setPass(string newPass) {
			this->password = newPass;
		}
		
		void setId(string newId) {
			this->id = newId;
		}

		void setNombre(string nuevoNombre) {
			this->nombre = nuevoNombre;
		}
		
		void setPartidasGanadas(int partidasGanadas) {
			this->partidasGanadas = partidasGanadas;
		}

		void setPartidasJugadas(int partidasJugadas) {
			this->partidasJugadas = partidasJugadas;
		}

		void setPartidasPerdidas(int partidasPerdidas) {
			this->partidasPerdidas = partidasPerdidas;
		}

		// cada vez que aumentamos una partida ganada o perdida tenemos que aumentar las partidas totales
		void aumentarPartidasGanadas() {
			this->partidasGanadas = this->partidasGanadas + 1;
			this->aumentarPartidasJugadas();
		}
		
		// cada vez que aumentamos una partida ganada o perdida tenemos que aumentar las partidas totales
		void aumentarPartidasPerdidas() {
			this->partidasPerdidas = this->partidasPerdidas + 1;
			this->aumentarPartidasJugadas();
		}
		
		void setPuntosGanados(int puntosGanadosEnPartida) {
			this->puntosGanados = puntosGanadosEnPartida;
		}
};
#endif 